package com.dragon.interfaces.mapper;

import com.dragon.interfaces.domain.request.user.UserRequest;
import com.dragon.interfaces.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 用户信息表 Mapper 接口
 * </p>
 *
 * @author dragon
 * @since 2024-07-31 17:42:19
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 获取用户拥有的权限字符
     *
     * @param userId 用户ID
     * @return 权限字符集合
     */
    List<String> selectUserPermissionByUserId(@Param("userId") Long userId);

    /**
     * 用户列表
     * @param param 搜索参数
     * @return List<User>
     */
    List<User> selectUserList(UserRequest param);

    /**
     * 用户总数
     * @param param 搜索参数
     * @return 用户总数
     */
    int selectUserCount(UserRequest param);

    /**
     * 允许授权用户列表
     * @param param 搜索参数
     * @return 允许授权用户列表
     */
    List<User> selectAllowAuthUserList(UserRequest param);

    /**
     * 允许授权用户总数
     * @param param 搜索参数
     * @return 允许授权用户列表总数
     */
    int selectAllowAuthUserCount(UserRequest param);

}
